3365
11477
Tengo un conjunto de datos como se indica a continuación
nombre col1 col2
a 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5,3 5,4
f 4.5 4.0
quiero comparar col1 y col2 de mi df y quiero hacer otra columna en la que, al comparar los valores de col1 y col2, si el valor de col2 aumenta desde col1, entonces quiero ingresar aumentando junto a ellos en mi columna allí y si están decreciente, entonces quiero escribir decreciente y sin cambios si son iguales
y quiero mi salida como esta
nombre col1 col2 col3
a 10,3 10,9 creciente
b 11 15 creciente
c 20 7.2 decreciente
d 6.2 6.2 sin cambios
e 5.3 5.4 creciente
f 4.5 4.0 decreciente 
Con dplyr:
df%>%
mutate (Col3 = ifelse (col2 == col1,
"ningún cambio",
ifelse (col2> col1,
"aumentando", "disminuyendo")))
O usando case_when como lo sugiere @akrun:
df%>%
mutate (Col3 = case_when (col1 == col2 ~ "sin cambios",
col2> col1 ~ "Aumentando",
VERDADERO ~ "decreciente"))
Resultado:
nombre col1 col2 Col3
1 a 10,3 10,9 creciente
2 b 11.0 15.0 creciente
3 c 20,0 7,2 decreciente
4 d 6,2 6,2 sin cambios
5 e 5,3 5,4 creciente
6 f 4.5 4.0 decreciente
Datos:
df <-estructura (lista (nombre = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Podemos restar col1 por col2 y luego usar el signo para asignar valores
df $ col3 <- c ("decreciente", "sin cambios", "creciente") [sign (df $ col1 - df $ col2) + 2]
df
# nombre col1 col2 col3
# 1 a 10,3 10,9 decreciente
# 2 b 11.0 15.0 decreciente
# 3 c 20.0 7.2 creciente
# 4 d 6.2 6.2 sin cambios
# 5 e 5.3 5.4 decreciente
# 6 f 4.5 4.0 creciente
O usando dplyr podemos usar case_when
biblioteca (dplyr)
df%>%
mutate (col3 = case_when (col1 == col2 ~ "sin cambios",
col1> col2 ~ "aumentando",
VERDADERO ~ "decreciente"))
|
Base R
df $ col3 <-with (df, ifelse (col1> col2, "decreciente",
ifelse (col1